Rendering is the process of generating an image from a model by means of computer programs. The model can include a description of three-dimensional objects using a particular language or data structure. A model can contain information such as geometry, viewpoint, texture, lighting, and shading information. The image may be a digital image or raster graphics image. A renderer can be used to produce a sequence of frames, yielding an animation.
Rendering has uses in architecture, video games, simulators, movie or TV special effects, and design visualization. As a product, a wide variety of renderers are commercially available. Some are integrated into larger modeling and animation packages, and some are stand-alone.
In the case of three-dimensional (3D) graphics, rendering may be a slow and expensive process. Rendering effects based on configuring (or re-configuring) lighting shaders, and other shaders, can create a critical bottleneck in a production pipeline due to computational demands. Some renderers use buffers such as deep-framebuffers, to cache results of calculations performed during the rendering process. A deep-framebuffer can cache static values such as normals and texture samples in image space. Each time a user updates shader parameters (e.g., lighting parameters), real-time shaders can interactively recompute the image using the values in the cache as well as dynamically generated values based on the updated shader parameters.